package com.galen.manual.service;

import com.galen.manual.dto.SendSmsDTO;

/**
 * 短信验证码Service接口
 */
public interface SmsCodeService {

    /**
     * 发送短信验证码
     * @param sendSmsDTO 发送短信请求
     * @param ipAddress 请求IP地址
     * @return 发送结果信息
     */
    String sendSmsCode(SendSmsDTO sendSmsDTO, String ipAddress);

    /**
     * 验证短信验证码
     * @param phone 手机号
     * @param code 验证码
     * @param businessType 业务类型
     * @return 是否验证成功
     */
    boolean validateSmsCode(String phone, String code, String businessType);

    /**
     * 标记验证码为已使用
     * @param phone 手机号
     * @param code 验证码
     * @param businessType 业务类型
     */
    void markSmsCodeAsUsed(String phone, String code, String businessType);

    /**
     * 清理过期的验证码
     */
    void cleanExpiredCodes();

    /**
     * 检查是否还有有效的验证码
     * @param phone 手机号
     * @param businessType 业务类型
     * @return 是否还有有效验证码
     */
    boolean hasValidCode(String phone, String businessType);
}